package me.zhengjie.modules.businessRevoke.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import me.zhengjie.modules.account.domain.AccountAc08;
import me.zhengjie.modules.fileupload.domain.ElectronicMaterialFileDetailVO;
import me.zhengjie.modules.fileupload.domain.ElectronicMaterialFileVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;

/**
 * 电子材料Mapper接口
 */
@Mapper
public interface BusinessRevokeMapper extends BaseMapper<ElectronicMaterialFileVO> {

    IPage<ElectronicMaterialFileDetailVO> getFileList(@Param("param") Map param, Page<Object> page);

    /**
     * 根据条件查询电子材料列表
     * @param personId 人员ID
     * @param businessType 业务类型
     * @return 电子材料列表
     */
    List<ElectronicMaterialFileVO> selectByCondition(
            @Param("aac001") String aac001,
            @Param("aaa121") String aaa121);

    /**
     * 根据材料ID查询文件列表
     * @param materialId 材料ID
     * @return 文件列表
     */
    List<ElectronicMaterialFileVO> selectFilesByMaterialId(
            @Param("materialId") String materialId);

    /**
     * 根据人员和业务类型查询材料
     * @param personId 人员ID
     * @param businessType 业务类型
     * @return 电子材料实体
     */
    ElectronicMaterialFileVO selectByPersonAndType(
            @Param("personId") String personId,
            @Param("businessType") String businessType);

    /**
     * 插入文件记录
     * @param file 文件实体
     * @return 影响行数
     */
    int insertFile(ElectronicMaterialFileDetailVO file);

    /**
     * 根据文件ID查询文件
     * @param fileId 文件ID
     * @return 文件实体
     */
    ElectronicMaterialFileVO selectFileById(
            @Param("fileId") String fileId);

    /**
     * 统计材料下的文件数量
     * @param materialId 材料ID
     * @return 文件数量
     */
    int countFilesByMaterialId(
            @Param("materialId") String materialId);

    /**
     * 批量插入文件记录
     * @param files 文件列表
     * @return 影响行数
     */
    int batchInsertFiles(
            @Param("files") List<ElectronicMaterialFileVO> files);

    /**
     * 更新文件状态
     * @param fileId 文件ID
     * @param status 状态(0-正常,1-已删除)
     * @return 影响行数
     */
    int updateFileStatus(
            @Param("id") String id,
            @Param("aae100") String aae100);
}
